﻿-- 以词定字
-- 原脚本 https://github.com/BlindingDark/rime-lua-select-character

local select = {}

function select.init(env)
	local config = env.engine.schema.config
	select.first_key = config:get_string("key_binder/select_first_character") or "bracketleft"
	select.last_key = config:get_string("key_binder/select_last_character") or "bracketright"
end

function select.func(key, env)
	local engine = env.engine
	local context = env.engine.context

	if
		not key:release()
		and (context:is_composing() or context:has_menu())
		and (select.first_key or select.last_key)
	then
		local text = context.input
		if context:get_selected_candidate() then
			text = context:get_selected_candidate().text
		end
		if utf8.len(text) > 1 then
			if key:repr() == select.first_key then
				engine:commit_text(text:sub(1, utf8.offset(text, 2) - 1))
				context:clear()
				return 1
			elseif key:repr() == select.last_key then
				engine:commit_text(text:sub(utf8.offset(text, -1)))
				context:clear()
				return 1
			end
		end
	end
	return 2
end

return select
